package nl.windgazer.arachne.services.facebook;


public interface FacebookOpenGraphDAO {

	public String publishFeed(String profileId, String accessToken, String message, String picture, String link, String name, String caption, String description, String source) throws FacebookOpenGraphException;

	/**
	 * Read the contents of an OpenGraph entry in facebook. 'id' is the only required attribute and points to the unique
	 * entry in the facebook open-graph.
	 * 
	 * The 'link' property is appended to the url for getting 'nested information' from the graph.
	 * 
	 * The 'token' is required for fetching privileged information and should be obtained from the FacebookAPISettings
	 * 
	 * The params are the obvious additional requirements and should be supplied as a key/value pair of strings.
	 * 
	 * @param id
	 * @param link
	 * @param token
	 * @param params
	 * @return
	 * @throws FacebookOpenGraphException 
	 */
	public String readOpenGraph(final String id, final String link, final String token, final String ... params) throws FacebookOpenGraphException;

	/**
	 * Convenience method that will obtain the token from FacebookAPISettings.
	 * 
	 * @param id
	 * @param link
	 * @param params
	 * @return
	 */
	public String readOpenGraph(final String id, final String link) throws FacebookOpenGraphException;

	public FacebookUser getUser() throws FacebookOpenGraphException;

}
